Section: Scientific Foundations
Underlying models
The formal models we use are mainly automata-like structures such as
labelled transition systems (LTS) and some of their extensions: an
LTS is a tuple
To model reactive systems in the testing context, we use Input/Output
labeled transition systems (IOLTS for short). In this setting, the
interactions between the system and its environment (where the tester
lies) must be partitioned into inputs (controlled by the environment),
outputs (observed by the environment), and internal (non observable)
events modeling the internal behavior of the system. The alphabet
In the controller synthesis theory, we also distinguish between
controllable and uncontrollable events (
In the context of verification, we also use Timed Automata. A timed
automaton is a tuple
Also, for verification purposes, we use graph grammars that are a general tool to define families of graphs. Such grammars are formed by a set of rules, left-hand sides being simply hyperedges and right-hand sides hypergraphs. For finite degree, these graph grammars characterise transition graphs of pushdown automata (each graph generated by such a grammar corresponds to the transition graph of a pushdown automaton). They provide a simple yet powerfull setting to define and study infinite state systems.
In order to cope with more realistic models, closer to real
specification languages, we also need higher level models that
consider both control and data aspects. We defined (input-output)
symbolic transition systems ((IO)STS), which are extensions of (IO)LTS
that operate on data (i.e., program variables, communication
parameters, symbolic constants) through message passing, guards, and
assignments. Formally, an IOSTS is a tuple
Our research is based on well established theories: conformance testing, supervisory control, abstract interpretation, and theorem proving. Most of the algorithms that we employ take their origins in these theories:
-
graph traversal algorithms (breadth first, depth first, strongly connected components, ...). We use these algorithms for verification as well as test generation and control synthesis.
-
BDDs (Binary Decision Diagrams) algorithms, for manipulating Boolean formula, and their MTBDDs (Multi-Terminal Decision Diagrams) extension for manipulating more general functions. We use these algorithms for verification, test generation and control.
-
abstract interpretation algorithms, specifically in the abstract domain of convex polyhedra (for example, Chernikova's algorithm for the computation of dual forms). Such algorithms are used in verification and test generation.
-
logical decision algorithms, such as satisfiability of formulas in Presburger arithmetics. We use these algorithms during generation and execution of symbolic test cases.